package com.c2c.service;

import com.c2c.po.Goods;
import com.c2c.po.GoodsClassify;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface GoodsService {

    /**
     * 查找所有的商品             管理员调用
     * @return                 所有商品
     */
    List<Goods> findAllGoods();

    /**
     * 查找对应商品的具体信息
     * @param goodId            商品Id
     * @return                  对应商品
     */
    Goods findById(int goodId);

    /**
     * 查找对应个人商品            管理员调用，个人页面
     * @param userAccount       用户Id
     * @return                  该用户所有商品
     */
    List<Goods> findByUserId(int userAccount);

    /**
     * 查询到的所有该分类的商品
     * @param goodsClassifyId   分类的ID
     * @return                  所有该分类的商品
     */
    List<Goods> findByClassifyId(int goodsClassifyId);

    /**
     * 模糊查询  语句拼装          搜索功能
     * @param string            搜索内容
     * @param goodsClassifyId   商品类别
     * @return                  所有相关商品
     */
    List<Goods> findBySomething(String string, int goodsClassifyId);

    /**
     * 更改商品信息  更改后状态变为未审核
     * @param goods             封装好的商品内容
     */
    void updateAllById(Goods goods, int goodsState);

    /**
     * 更改商品状态    管理员更改状态
     * @param goods  封装内容
     */
    void updateStateById(Goods goods, int goodsState);

    /**
     * 新增商品
     * @param goods 封装信息
     * */
    void insertGoods(Goods goods);

    /**
     * 查找所有的类别
     * @return    所有类别以及对应类别所有的内容
     */
    List<GoodsClassify> findAll();

    /**
     * 添加新的类别                 管理员限定
     * @param goodsClassify       封装内容
     */
    void insertClassify(GoodsClassify goodsClassify);

}
